#include "drv_systick.h"
static uint16_t fs_us=0;
static uint16_t fs_ms=0;
void drv_systick_init(uint8_t systick)
{
	SysTick->CTRL &= ~0x05;//清零
	fs_us=systick/8;//计1us需要记的次数
	fs_ms=fs_us*1000;//记1ms需要记的次数
}

void drv_systick_ms(uint16_t ms)
{
	uint32_t temp=0;//中间值
	uint16_t i=0;
	for(i=0;i<ms;i++)
	{
		SysTick->LOAD = fs_ms*1;//计数1ms
		SysTick->CTRL |= 0x01;//开始能，开始计数
		do
		{
			temp = SysTick->CTRL;//计数赋值
		}
		while (!(temp&(0x01<<16)));//比较判断计数位是否为1
		SysTick->CTRL &= ~0x01;//置零，关闭计数
	}
}

void drv_systick_us(uint16_t us)
{
	uint32_t temp=0;
	SysTick->LOAD = fs_us*us;//装载次数
	SysTick->CTRL |= 0x01;//置位，开计数
	do
		{
			temp = SysTick->CTRL;//计数赋值
		}
		while (!(temp&(0x01<<16)));//比较判断计数位是否为1
		SysTick->CTRL &=~0x01;//置零，关闭计数
}

